package solicitudes.dao.impl;


import java.util.List;
import java.util.ArrayList;

import org.apache.log4j.Logger;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import solicitudes.dao.DAOTipoSolicitud;
import solicitudes.entity.TipoSolicitud;

/***
 * 
 * @author MARIA ALEJANDRA CELEMIN R.
 * @version 1.0
 * 
 * Clase que implementa los metodos de la interfaz DAOTipoSolicitud
 * @see DAOTipoSolicitud
 *
 */

public class DAOTipoSolicitudImpl extends HibernateDaoSupport implements DAOTipoSolicitud {

 private static Logger logger = Logger.getLogger(DAOTipoSolicitud.class);
 
 /* (non-Javadoc)
  * @see solicitudes.dao.DAOTipoSolicitud#obtenerTipoSolicitudes()
  */
 @SuppressWarnings("unchecked")
 @Override
 public List<TipoSolicitud> obtenerTipoSolicitudes() {
  
  Session session = getSession();
  List<TipoSolicitud> encontradas = new ArrayList<TipoSolicitud>();
  
  try {
   encontradas = session.createQuery("from TipoSolicitud").list();
  } catch (HibernateException ex) {
   logger.debug("Exception encontrada" + ex.getLocalizedMessage());
  } finally {
   session.close();
  }
  
  return encontradas;
 }

 /* (non-Javadoc)
  * @see solicitudes.dao.DAOTipoSolicitud#obtenerTipoSolicitud()
  */
 @Override
 public TipoSolicitud obtenerTipoSolicitud(Integer codigo) {
 
  Session session = getSession();
  TipoSolicitud encontrada = null;
  
  try {
   encontrada = (TipoSolicitud) session.get(TipoSolicitud.class, codigo);
  } catch (HibernateException ex) {
   logger.debug("Exception encontrada" + ex.getLocalizedMessage());
  } finally {
   session.close();
  }
  
  return encontrada;
 }

 /* (non-Javadoc)
  * @see solicitudes.dao.DAOTipoSolicitud#guardarTipoSolicitud(solicitudes.entity.TipoSolicitud)
  */
 @Override
 public void guardarTipoSolicitud(TipoSolicitud tipoS) {
  
  Session session = getSession();
  session.beginTransaction();
  
  try {
   session.save(tipoS);
   session.getTransaction().commit();
   
  } catch (HibernateException ex) {
   logger.debug("Exception encontrada" + ex.getLocalizedMessage());
  } finally {
   session.close();
  }  
 }

 /* (non-Javadoc)
  * @see solicitudes.dao.DAOTipoSolicitud#eliminarTipoSoliitud(solicitudes.entity.TipoSolicitud)
  */
 @Override
 public void eliminarTipoSolicitud(TipoSolicitud tipoS) {
  
  Session session = getSession(); 
  session.beginTransaction();
  
  try {
   session.delete(tipoS);
   session.getTransaction().commit();
  } catch (HibernateException ex) {
   logger.debug("Exception encontrada" + ex.getLocalizedMessage());
  } finally {
   session.close();
  }
  
 }

 /* (non-Javadoc)
  * @see solicitudes.dao.DAOTipoSolicitud#editarTipoSolicitud(solicitudes.entity.TipoSolicitud)
  */
 @Override
 public void editarTipoSolicitud(TipoSolicitud tipoS) {
  
  Session session = getSession(); 
  session.beginTransaction();
  
  try {
   session.merge(tipoS);
   session.getTransaction().commit();
  } catch (HibernateException ex) {
   logger.debug("Exception encontrada" + ex.getLocalizedMessage());
  } finally {
   session.close();
  }
  
 }

}